import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

/**
 * Write a description of class Pistola here.
 * 
 * @author (Fco Fernando Gosch Acosta) 
 * @version (1.0)
 */
public class Pistola extends Armas
{
    protected int danioBala;
    private SimpleTimer timer1;
    protected int lapsoBala; 
    private int nivel;
    private int costo;
    
    /**
     * Constructor Pistola
     *
     */
    public Pistola(int unGrado)
    {
        super(300, unGrado);
        danioBala = 100;
        timer1 = new SimpleTimer();
        timer1.mark();
        lapsoBala = 500;   
        nivel = 1;
        costo = 100;
    }
    
    /**
     * Metodo dimeDanio para decir la cantidad ed daño que hace
     *
     * @return la cantidad de daño que hace
     */
    public int dimeDanio()
    {
        return danioBala;
    }
    
    /**
     * Metodo subeNivel para subirle el nivel al arma mejorando coalidades
     *
     */
    public void subeNivel()
    {
        danioBala = (danioBala/2) + danioBala;
        lapsoBala = (lapsoBala/2) - lapsoBala;
        vida = 300;
        nivel = nivel + 1;
        subenivel.play();
    }
    
    /**
     * Act - do whatever the Pistola wants to do. This method is called whenever
     * the 'Act' or 'Run' button gets pressed in the environment.
     */
    public void act() 
    {
        Pulido p = (Pulido) getOneIntersectingObject(Pulido.class);
        Grande g = (Grande) getOneIntersectingObject(Grande.class);
        Metal m = (Metal) getOneIntersectingObject(Metal.class);
        Pequenio pe = (Pequenio) getOneIntersectingObject(Pequenio.class);
        sigueRaton();
        
        if(p!=null){
            quitaVida(p.dameDanio());
            getWorld().removeObject(p);
        }
        
        else if(g!=null){
            quitaVida(g.dameDanio());
            getWorld().removeObject(g);
        }
        
        else if(m!=null){
           quitaVida(m.dameDanio());
           getWorld().removeObject(m);
        }
        
        else if(pe!=null){
            quitaVida(pe.dameDanio());
            getWorld().removeObject(pe);
        }
        
        if(((Espacio) getWorld()).pulsoEnEspacio() && timer1.millisElapsed() > lapsoBala )
        {
            getWorld().addObject(new Bala(getRotation()), getX() ,getY());
            timer1.mark();
        }
        
        if(rotacion.millisElapsed() > lapsoRotacion )
        {
            gravita();
            rotacion.mark();
        }
        
        if( Greenfoot.mouseClicked(this) && ( (Espacio)getWorld()).damePuntos() > (costo * nivel))
        {
             ((Espacio) getWorld()).bajaRecursos(costo * nivel);
            subeNivel();
           
        }
        
        if( vida < 0)
        {
            getWorld().removeObject(this);
        }
    }    
}
